/**
 * 存储用户信息:token,个人信息
 */
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getyonghu, loginAPI, gettouxiang } from '@/api/user'
export default {
  // 模块化加锁,防止冲突
  namespaced: true,
  // 1.定义变量
  state: {
    token: getToken() || '',
    yonghuobj: ''
  },
  // 修改变量（同步）
  mutations: {
    // 修改token值
    setToken(state, val) {
      state.token = val
      setToken(val)
    },
    // 修改用户数据
    setyonghuobj(state, val) {
      state.yonghuobj = val
    },
    // 删除token=》退出登录
    delToken(state) {
      state.token = ''
      state.yonghuobj = ''
      removeToken()
    }
  },
  // 3.调用后台接口发请求（异步）
  actions: {
    // 发送请求登录 获取token
    async loginAction(ctx, loginForm) {
      // 1. 发请求获取token
      const token = await loginAPI(loginForm)
      console.log('登录成功token:', token)
      // 2. 存储token？
      // ctx.commit === 等价于 this.$store.commit
      ctx.commit('setToken', token)
    },
    // 发送获取用户信息
    async getyh(ctx, val) {
      const res = await getyonghu()
      console.log('获取用户信息', res)
      ctx.commit('setyonghuobj', res)
      const res2 = await gettouxiang(res.userId)
      console.log('获取详细信息', res2)
      ctx.commit('setyonghuobj', { ...res, ...res2 })
    },
    // 退出登录
    deltuichu({ commit }) {
      commit('delToken')
    }
  }
}

